﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;

namespace RoomPriceEntity
{
    public class BookingHotelAvlRequestEntity
    {
        public string arrival_date { get; set; }

        public string departure_date { get; set; }

        public List<string> hotel_ids { get; set; }

        public string languagecode { get; set; }

        public int show_extra_charges { get; set; }

        public int show_test { get; set; }

        public string currency_code { get; set; }
    }

    [DataContract]
    public class BookingHotelAvlResponseEntity
    {
        [DataMember]
        public int ranking { get; set; }
        [DataMember]
        public string currency_code { get; set; }
        [DataMember]
        public double max_total_price { get; set; }
        [DataMember]
        public double max_price { get; set; }
        [DataMember]
        public double min_total_price { get; set; }
        [DataMember]
        public double min_price { get; set; }
        [DataMember]
        public string hotel_id { get; set; }
        [DataMember]
        public int available_rooms { get; set; }
    }

    [DataContract]
    public class BookingBlockAvlResponseEntity
    {
        [DataMember]
        public string arrival_date { get; set; }

        [DataMember]
        public string hotel_id { get; set; }

        [DataMember]
        public string departure_date { get; set; }

        [DataMember(Name = "block")]
        public List<OneBlock> BlockList { get; set; }
    }

    [DataContract]
    public class OneBlock
    {
        [DataMember]
        public int max_occupancy { get; set; }

        [DataMember]
        public string refundable_until { get; set; }

        [DataMember]
        public int breakfast_included { get; set; }

        [DataMember]
        public int deposit_required { get; set; }

        [DataMember]
        public string block_id { get; set; }

        [DataMember]
        public int refundable { get; set; }

        [DataMember(Name = "min_price")]
        public PriceItem minPrice { get; set; }

        [DataMember(Name = "incremental_price")]
        public List<PriceItem> IncrementalPriceList { get; set; }

        [DataMember]
        public string name { get; set; }
    }

    [DataContract]
    public class PriceItem
    {
        [DataMember]
        public string currency { get; set; }

        [DataMember(Name = "extra_charges_breakdown")]
        public ExtraChargesBreakdown extraChargesBreakdown { get; set; }

        [DataMember(Name = "other_currency")]
        public OtherCurrency otherCurrency { get; set; }

        [DataMember]
        public double price { get; set; }
    }

    [DataContract]
    public class OtherCurrency
    {
        [DataMember]
        public string currency { get; set; }

        [DataMember]
        public double price { get; set; }
    }

    [DataContract]
    public class ExtraChargesBreakdown
    {
        [DataMember(Name = "extra_charge")]
        public List<ExtraCharge> ExtraChargeList { get; set; }
        [DataMember]
        public int persons { get; set; }
    }

    [DataContract]
    public class ExtraCharge
    {
        [DataMember]
        public int charge_price_mode { get; set; }
        [DataMember]
        public string currency { get; set; }
        [DataMember]
        public double amount { get; set; }
        [DataMember]
        public double charge_amount { get; set; }
        [DataMember]
        public int excluded { get; set; }
        [DataMember]
        public string name { get; set; }
        [DataMember]
        public string type { get; set; }
    }

    [DataContract]
    public class RackRate
    {
        [DataMember]
        public string currency { get; set; }
        [DataMember]
        public double price { get; set; }
    }
}
